#include <iostream>

using namespace std;

//// 该代码研究linux的c++的函数命名规则
//// 查看可执行程序的汇编信息：objdump -S 可执行程序名
//
//
//void func1(int a, double b, int* p) // _Z5func1idPi    _Z:前缀   5：函数名的字节数  id:int、double  Pi:int*
//{
//  std::cout << "func1调用" << std::endl;
//}
//
//void func2(int a, double b, int** pp) // _Z5func1idPi    _Z:前缀   5：函数名的字节数  id:int、double  Pi:int*
//{
//  std::cout << "func2调用" << std::endl;
//}
//
//int main()       
//{  
//  int a = 0;                         
//  int* p = &a;                                      
//  int** pp = &p;  
//  func1(1, 1.1, p);  
//  func2(1, 1.1, pp);                                                                                       
//  return 0;  
//}                                       
//  
  
                                                                                                               
                 
// 该代码用来测试g++的对齐数（结构体的内存对齐）  
                 
                 
                 
// 该代码来测坑题


class A
{
public:
    void Print()
    {
        cout << "Print()" << endl;
    }

// private:
    int _a;
};


int main()
{
    A* p = nullptr;
    p->Print();// 看汇编代码

    p->_a;// 不会崩溃，因为没有对其修改和访问，在底层，编译器没有生成相关指令（可以看汇编代码），但是这和编译器有关
    return 0;
}
